iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0

首先,先來講什麼是演算法 (Algorithm)

演算法 是一個「逐步、明確且有限計算規則或步驟」。

  • 接收單個或多個的 輸入 (input)
  • 經過 明確定義有限步驟 的計算後。
  • 產生單個或多個 輸出 (output)

舉個例子:
想像一下自己就是一台機器,現在手受傷了要貼 OK 蹦怎麼做?

大家可能會想說,直接從藥箱拿 OK 蹦貼上去不就好了?

沒錯!但如果是演算法的話就不夠詳細了。

而演算法會像是:
輸入: 藥箱。
運作規則:

  1. 打開藥箱。
  2. 拿出 OK 蹦。
  3. 撕開包裝。
  4. 取出 OK 蹦。
  5. 將 OK 蹦對準傷口。
  6. 貼上 OK 蹦。

輸出: 貼好 OK 蹦的手。

那作為寫程式的人,學習演算法到底有什麼差別呢?

對我而言,每一個演算法都是一個小工具。有學習的話,遇到特定問題時,我們就可能找到更高效的解法

就像打怪時,面對火系 boss 用水系比草系好打;砍樹時,用鋸子比斧頭省力。

如果沒學演算法,解決問題時可能會更費力,也更慢

那甚麼是好的演算法?

分享一句查資料看到的,

For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing.
-- Francis Sullivan

但後面還是會講如何客觀判斷演算法好壞的方法 (Big-O 等)。


最後,分享一下為甚麼要參加鐵人賽

我個人把學習本身也當作一種演算法。如果只是單純讀書、看影片,只完成了「輸入」,那其實並不是真正的學習。這次的鐵人賽,希望能完善自己的「學習演算法」:明確定義學習方式,並在這 30 天內完成文章輸出,希望能在這段時間內看到進步並養成良好的學習習慣,成長為大水牛。

而這次的學習路徑預計會從基礎的演算法、資料結構,到後面回偏向使用數學模型來解決問題的線性規劃 (Linear Programming, Lp),以及使 GPU 求解 LP 成為可能的 PDLP (Primal-Dual Linear Programming)。

baby water buffalo


系列文
演算法 30 Days --- 從小牛變水牛1
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言